import 'dart:convert';
import 'Storage.dart';

// 历史搜索记录保存、获取、清除
class SearchServices {
  //  保存历史搜索数据
  static setHistoryData(keyWords) async {
    /**
     * 1、获取本地存储里面的数据  (searchList)
     * 2、判断本地存储是否有数据
     *    2、1 如果有数据
     *        1、读取本地存储的数据
     *        2、判断本地存储中有没有当前数据
     *            如果有不做操作
     *            如果没有当前数据，本地存储的数据和当前数据拼接后重新写入
     *    2、2  如果没有数据，直接把当前数据放在数组中写入到本地存储
     */

    try {
      //  1、获取本地存储里面的数据  (searchList)
      List searchListData = json.decode(await Storage.getString('searchList'));

      //  2、判断本地存储是否有数据
      bool hasData = searchListData.any((v) {
        return v == keyWords;
      });

      //  如果没有当前数据，本地存储的数据和当前数据拼接后重新写入
      if (!hasData) {
        searchListData.add(keyWords);
        await Storage.setString('searchList', json.encode(searchListData));
      }
    } catch (err) {
      //  2、2  如果没有数据，直接把当前数据放在数组中写入到本地存储
      List tempList = new List();
      tempList.add(keyWords);
      await Storage.setString('searchList', json.encode(tempList));
    }
  }

  //  获取历史搜索数据
  static getHistoryData() async {
    try {
      //  1、获取本地存储里面的数据  (searchList)
      List searchListData = json.decode(await Storage.getString('searchList'));
      return searchListData;
    } catch (err) {
      return [];
    }
  }

  //  清空历史搜索记录
  static cleanHistoryData() async {
    await Storage.remove('searchList');
  }

  //  删除指定的历史搜索记录
  static removeHistoryItem(keyWords) async {
    //  获取本地存储里面的数据  (searchList)
    List searchListData = json.decode(await Storage.getString('searchList'));

    //  删除数据
    searchListData.remove(keyWords);

    // 重新存储
    await Storage.setString('searchList', json.encode(searchListData));
  }
}
